import java.util.Scanner;

public class HelloBit {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int age = 10;
//        if(age < 18){
//            System.out.println("少年");
//        }else if (age <= 28){
//            System.out.println("青年");
//        }
//        //判断素数：素数，只能被1和自身整除
//
//        for (int i = 2; i <n ; i++) {
//            if(n )
//        }
//    }
    public static void add(int x){
        return ;
    }

    public static int addInt(int x,int y){
        return a+b;
    }
    public static double addDouble(double x,double y){
        return x+y;
    }
    //方法名字一样，编译器会自动根据参数去匹配对应的方法
//方法重载  参数类型 参数个数
//返回值类型不能进行方法重载
//构成重载的条件：方法名称相同，方法的参数列表不同（顺序，个数，类型）
//和返回值没有关系，可以一样可以不一样
//方法重载CPP也有，可以将相同功能的但是需要不同数据类型的方法
//统一起来，用一个相同的名字进行管理
//编译器怎么识别方法重载：在编译器看来，方法重载的方法的名字是不一样的（编译器有特定的方法去识别），
// 用户在调用时看似调用相同名字的方法，但编译器却能认出不同的名字
    public static int sum(int a,int b){}
    public static int sum(int a){}
    public static int sum(int a,int b,int c){}

    public static int facNum(int num) {
        int sum = 0;
        for (int j = 1; j < num; j++) {
            int ret = 1;
            for (int i = 1; i < j; i++) {
                ret *= i;
            }
            sum += ret;
        }
        return sum;
    }
    public static void main(String[] args) {
        int sum = 0;
        for (int j = 1; j < 10; j++) {
            int ret = 1;
            for (int i = 1; i < j; i++) {
                ret *= i;
            }
            sum += ret;
        }
        System.out.println(sum);
        int sum1 = facNum(10);
        System.out.println(sum1);



    }
}


//    int i = 0;
//    int n = 15;
//	for (i = 30; i >= 0; i -= 2)
//            {
//            printf("%d", (n >> i) & 1);
//            }
//            printf("\n");
//            for (i = 31; i >= 1; i -= 2)
//            {
//            printf("%d", (n >> i) & 1);
//            }
//            system("pause");
//            return 0;


//00000000000000000000000000000111
//00000000000000000000000000000000




//实参和形参  按照值传递
//改变形参的值不会改变实参
//在Java中，实参的值永远是拷贝到形参，形参和实参是两个实
//体，实参的名字和实参的名字可以相同
//如果在Java中需要方法交换两个数怎么办

//下面的方法知识交换了形参，没有交换实参，此处做不到交换
//Java不是面向底层，不能拿到地址
    public static void sway(int a,int b){
        int t = 0;
        t = a;
        a = b;
        b = t;
    }

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        sway(a,b);
        System.out.println(a);
        System.out.println(b);
    }

//必须在堆上才能进行交换？？？  传引用类型的参数

//没有返回值的方法
//方法的返回值是可选的，可有可无，没有时返回void






